{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "de3111a1-b2b5-409e-ba80-7c3ab0e9f2f4",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import preprocessing\n",
    "\n",
    "import matplotlib\n",
    "import numpy as np\n",
    "import xgboost as xgb\n",
    "import pandas as pd\n",
    "import shap\n",
    "import pickle\n",
    "import matplotlib.pyplot as plt\n",
    "import itertools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e71b8235-6c1f-485b-8339-10363ad4d49c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[13:41:33] WARNING: C:\\buildkite-agent\\builds\\buildkite-windows-cpu-autoscaling-group-i-0fdc6d574b9c0d168-1\\xgboost\\xgboost-ci-windows\\src\\learner.cc:553: \n",
      "  If you are loading a serialized model (like pickle in Python, RDS in R) generated by\n",
      "  older XGBoost, please export the model by calling `Booster.save_model` from that version\n",
      "  first, then load it back in current version. See:\n",
      "\n",
      "    https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html\n",
      "\n",
      "  for more details about differences between saving model and serializing.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('./data/obj', 'rb') as file:\n",
    "    data = pickle.load(file)\n",
    "clf = data[0]\n",
    "df = data[1].dropna().reset_index().drop('index', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "a46c72b9-7f58-4606-a640-9500f809587d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x1ca0ae4c510>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGxCAYAAAA+tv8YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAbx0lEQVR4nO3df5BV9X3/8deyuAvqskGQJcgaSGoGXTTBoFaZ5pcMTGIzpU1p0mIHSaaTtqAgnU7R1NjUH2h/WGdiotFpLB1Fk04Gkzq1yNCJBoMjCPqN+IO00QZ1WEy1e4Ftd93d+/2DSEqCyuJn97K7j8fMGWbP3nvu+8yFuU/OOffeumq1Wg0AQAGjaj0AADB8CAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgL4LDuu+++fO1rXyu+3f/+7//OX/zFX+Tpp58uvm2g9oQFcFgDGRZf/vKXhQUMU8ICAChGWAC/5JJLLsmaNWuyY8eO1NXVpa6uLpdcckmSZPPmzfn4xz+eE044Ic3Nzfm93/u97Nmz55D733DDDfmVX/mVjBkzJieffHLmzp2b559/Pi+88EKmT5+eJFm4cOHBbb/wwguDvIfAQKnz7abAL/qP//iPXHbZZXn22Wdz9913J0lOPvnk7NmzJx/96EfzyU9+Mp///Oezf//+/Pmf/3kmTpyYzZs3J0n+8R//MZ///Ofzl3/5lzn//PPT0dGR73//+/n93//9zJgxI//yL/+S3/qt38r111+fj33sY0mSWbNmpbGxsWb7C5QjLIDDuuSSS7J169Y89dRTB9d95CMfSU9PTzZt2pS6urokydNPP52ZM2fm/vvvzyc/+cksW7YsmzdvzuOPP37Y7b5x1OKf/umf8tu//duDsi/A4HEqBDginZ2deeSRR7Jw4cL09vamp6cnPT09ef/735/W1tZs2bIlSXL22Wdn+/btWblyZTZt2pTXX3+9xpMDg0lYAEfktddeS29vby6//PIcd9xxhyw/+clPsmvXriQHjnT83d/9XdavX59f+7Vfy8knn5zly5fnf/7nf2q8B8BgGF3rAYCh4V3velfq6upy5ZVXZsGCBb/0+4kTJyZJRo0aleXLl2f58uV56aWXcu+992bVqlWZOHFirrrqqkGeGhhswgI4rIaGhvzv//7vwZ9POOGEnH/++XnmmWdy7bXXHtE2TjnllPzJn/xJ1q5dm2eeeebgdpMcsm1g+BAWwGGdfvrp+cY3vpF77rknp512WiZOnJi//uu/zsc//vF85jOfyWc/+9mMHz8+L774YjZs2JAlS5bkox/9aL7whS9k/Pjx+dVf/dWMHz8+jzzySJ588sn88R//cZJk8uTJede73pV77rkn06dPT2NjY84666yDwQEMbd4VAhxWpVLJF77whWzYsCH/9V//lcWLF+cf/uEfsnXr1lx99dV55JFH0t3dnalTp+bCCy/MF7/4xUydOjVr1qzJHXfckWeeeSadnZ1573vfmz/8wz/MpZdeenDb9913X6688sr8+Mc/TldXV55//vlMmzatdjsLFCMsAIBivCsEAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUMygf0BWX19fXn755TQ1NR38dkQA4NhWrVazd+/eTJkyJaNGvflxiUEPi5dffjmtra2D/bAAQAG7du3K1KlT3/T3gx4WTU1NSQ4MNm7cuMF+eADgKFQqlbS2th58HX8zgx4Wb5z+GDdunLAAgCHm7S5jcPEmAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChm2IRFZ3dP1m1/MZ3dPbUeBQBGrGETFut37M6r+7rz4I72Wo8CACPWsAmL+W2TM+HExsxra6n1KAAwYo2u9QClHN8wOgtmnVLrMQBgRBs2RywAgNoTFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUIywAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBi+hUWvb29ueqqqzJ9+vSMHTs273vf+3LNNdekWq0O1HwAwBAyuj83vvHGG3PrrbdmzZo1aWtry9atW7NkyZI0NzfnsssuG6gZAYAhol9h8YMf/CC/8Ru/kYsuuihJMm3atNxzzz157LHHBmQ4AGBo6depkAsuuCAbN27Mzp07kyRPPvlkNm3alE984hNvep+urq5UKpVDFt5cZ3dP1m1/MZ3dPbUeBQD6rV9HLFatWpVKpZIZM2akvr4+vb29ue6667Jo0aI3vc/q1avz5S9/+R0POlKs37E7r+7rzoM72rNg1im1HgcA+qVfRyy+9a1v5e67787atWuzbdu2rFmzJn/zN3+TNWvWvOl9rrjiinR0dBxcdu3a9Y6HHs7mt03OhBMbM6+tpdajAEC/1VX78ZaO1tbWrFq1KkuXLj247tprr81dd92VZ5999oi2UalU0tzcnI6OjowbN67/EwMAg+5IX7/7dcSis7Mzo0Ydepf6+vr09fUd3ZQAwLDSr2ssPvWpT+W6667Lqaeemra2tmzfvj033XRTPve5zw3UfADAENKvUyF79+7NVVddlXXr1mXPnj2ZMmVKfvd3fzdf+tKX0tDQcETbcCoEAIaeI3397ldYlCAsAGDoGZBrLAAA3oqwAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUIywAACKERYAQDHCAgAoRlgAAMUICwZEZ3dP1m1/MZ3dPbUeBYBBJCwYEOt37M6r+7rz4I72Wo8CwCASFgyI+W2TM+HExsxra6n1KAAMotG1HoDh6fiG0Vkw65RajwHAIHPEAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUIywAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAiul3WLz00ku5+OKLM2HChIwdOzZnnnlmtm7dOhCzAQBDzOj+3Pi1117LnDlz8rGPfSwPPPBATj755PzoRz/K+PHjB2o+AGAI6VdY3HjjjWltbc2dd955cN306dPf8j5dXV3p6uo6+HOlUunniFA7nd09Wb9jd+a3Tc7xDf365wIwIvXrVMh3v/vdzJ49OwsXLsykSZMya9as3HHHHW95n9WrV6e5ufng0tra+o4GhsG0fsfuvLqvOw/uaK/1KABDQl21Wq0e6Y3HjBmTJFm5cmUWLlyYLVu2ZPny5bntttuyePHiw97ncEcsWltb09HRkXHjxr3D8WFgdXb35MEd7ZnX1uKIBTCiVSqVNDc3v+3rd7/CoqGhIbNnz84PfvCDg+suu+yybNmyJZs3by46GABw7DjS1+9+nQp597vfnTPOOOOQdaeffnp+8pOfHN2UAMCw0q+wmDNnTp577rlD1u3cuTPvec97ig4FAAxN/QqLyy+/PI8++miuv/76/Pu//3vWrl2b22+/PUuXLh2o+QCAIaRfYXHOOedk3bp1ueeeezJz5sxcc801ufnmm7No0aKBmg8AGEL6dfFmCS7eBIChZ0Au3gQAeCvCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUIywAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLGCE6OzuybrtL6azu6fWowDDmLCAEWL9jt15dV93HtzRXutRgGFMWMAIMb9tciac2Jh5bS21HgUYxkbXegBgcBzfMDoLZp1S6zGAYc4RCwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAxwgIAKEZYAADFCAsAoBhhAQAUIywAgGKEBQBQjLAAAIoRFgBAMcICAChGWAAAxQgLAKAYYQEAFCMsAIBihAUAUIywAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAx7ygsbrjhhtTV1WXFihWFxgEAhrKjDostW7bk61//es4666yS8wAAQ9hRhcW+ffuyaNGi3HHHHRk/fnzpmQCAIeqowmLp0qW56KKLMnfu3Le9bVdXVyqVyiELwNHq7O7Juu0vprO7p9ajAIfR77C49957s23btqxevfqIbr969eo0NzcfXFpbW/s9JMAb1u/YnVf3defBHe21HgU4jH6Fxa5du7J8+fLcfffdGTNmzBHd54orrkhHR8fBZdeuXUc1KECSzG+bnAknNmZeW0utRwEOo65arVaP9Mb33XdffvM3fzP19fUH1/X29qauri6jRo1KV1fXIb87nEqlkubm5nR0dGTcuHFHPzkAMGiO9PV7dH82euGFF+aHP/zhIeuWLFmSGTNm5M/+7M/eNioAgOGtX2HR1NSUmTNnHrLuhBNOyIQJE35pPQAw8vjkTQCgmH4dsTic733vewXGAACGA0csAIBihAUAUIywAACK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6YwdOzZ33XVXDScbuob8EYvu7u48/vjjmTt37sF1o0aNyty5c7N58+YaTkaSdHR0JElOOumkGk8ysi1dujQXXXTRIf9OGHzf/e53M3v27CxcuDCTJk3KrFmzcscdd9R6rBHtggsuyMaNG7Nz584kyZNPPplNmzblE5/4RI0nG7oG/dtNS/vpT3+a3t7etLS0HLK+paUlzz77bI2mIjlw5GjFihWZM2dOZs6cWetxRqx7770327Zty5YtW2o9yoj34x//OLfeemtWrlyZK6+8Mlu2bMlll12WhoaGLF68uNbjjUirVq1KpVLJjBkzUl9fn97e3lx33XVZtGhRrUcbsoZ8WHDsWrp0aZ566qls2rSp1qOMWLt27cry5cuzYcOGjBkzptbjjHh9fX2ZPXt2rr/++iTJrFmz8tRTT+W2224TFjXyrW99K3fffXfWrl2btra2PPHEE1mxYkWmTJniOTlKQz4sJk6cmPr6+rS3tx+yvr29PZMnT67RVCxbtiz3339/Hn744UydOrXW44xYjz/+ePbs2ZOzzz774Lre3t48/PDDueWWW9LV1ZX6+voaTjiyvPvd784ZZ5xxyLrTTz893/72t2s0EX/6p3+aVatW5bOf/WyS5Mwzz8x//ud/ZvXq1cLiKA35aywaGhryoQ99KBs3bjy4rq+vLxs3bsz5559fw8lGpmq1mmXLlmXdunX5t3/7t0yfPr3WI41oF154YX74wx/miSeeOLjMnj07ixYtyhNPPCEqBtmcOXN+6e3XO3fuzHve854aTURnZ2dGjTr0pbC+vj59fX01mmjoG/JHLJJk5cqVWbx4cWbPnp1zzz03N998c/bv358lS5bUerQRZ+nSpVm7dm2+853vpKmpKbt3706SNDc3Z+zYsTWebuRpamr6petbTjjhhEyYMMF1LzVw+eWX54ILLsj111+f3/md38ljjz2W22+/PbfffnutRxuxPvWpT+W6667Lqaeemra2tmzfvj033XRTPve5z9V6tKGrOkx85StfqZ566qnVhoaG6rnnnlt99NFHaz3SiJTksMudd95Z69H4mY985CPV5cuX13qMEeuf//mfqzNnzqw2NjZWZ8yYUb399ttrPdKIVqlUqsuXL6+eeuqp1TFjxlTf+973Vr/4xS9Wu7q6aj3akDUsPscCADg2DPlrLACAY4ewAACKERYAQDHCAgAoRlgAAMUICwCgGGEBABQjLACAYoQFAFCMsAAAihEWAEAx/x/aYiy49A18TwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.clf()\n",
    "plot = plt.axes()\n",
    "plot.set_title('test', fontsize=11)\n",
    "x = list(range(10))\n",
    "y = list(range(10))\n",
    "y.reverse()\n",
    "\n",
    "plot.scatter(x, y, s = 0.1)\n",
    "\n",
    "x = [1, 2, 3]\n",
    "y = [0, 1, 1]\n",
    "\n",
    "plot.scatter(x, y, s = 22.1)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4daef554-56db-4f38-8cb9-177d6525f489",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "da4fa470-b7c4-4068-9dc6-8274a5aeaad8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
